# NMEA 2000
FDI_NMEA 2000 接口用户使用手册
# 1. 简介
NMEA 2000 是用于船舶与航海设备间数据通信的标准化接口协议,经串行网络传输位置、速度、状态等信息,广泛应用于船舶电子设备互联与数据共享。
FDISYSTEMS 产品兼容国际 NMEA 2000 协议,可与各类 NMEA 2000 设备互通,便于集成到船舶与海洋应用中,提供可靠、高效的数据通信。
# 2. 知识储备
# (1) 什么是 NMEA 2000?
NMEA 2000(National Marine Electronics Association 2000)规定了船舶电子设备通过共享网络通信与交换信息的规范。协议基于 CAN(Controller Area Network)总线传输,采用控制器–设备架构,支持全双工通信,同一总线上最多可连接约 250 个设备(如 GPS、雷达、声呐、自动驾驶系统等)。
# (2) 什么是 PGN?PGN 与 CAN ID 的关系是什么?
简单来说,PGN 是 NMEA 2000 的数据标识,也可理解为 CAN 扩展帧头中的一部分字段。接收 NMEA 2000 数据时须使用 29 bit 扩展帧。除 PGN 外,CAN 帧头还包含设备源地址、目标地址与优先级等信息。
# (3) NMEA 2000 与 CAN 通信的关系
NMEA 2000 是基于 CAN 电气与硬件基础的高层软件协议,规定了基于 CAN 帧头与数据帧的编码与交换格式。
# (4) 什么是多帧快速包发送方式?
当有效载荷总长度超过 8 字节时,需按多帧快速包格式在 CAN 总线上安全、连续地发送。格式示意如下:
| 帧 | Byte[0](序号) | 其余字节 |
|---|---|---|
| Packet_1 | 0 | Byte[1]=有效数据长度(示例为 28);Byte[2]~Byte[8]=Data[1]~Data[7] |
| Packet_2 | 1 | Data[8]~Data[15] |
| Packet_3 | 2 | Data[16]~Data[24] |
| Packet_4 | 3 | Data[25]~Data[28];不足字节填 0xFF |
说明:
- 首帧
Byte[1]为实际有效数据字节长度。 - 各帧
Byte[0]从 0 起依次递增,作为包序号。 - 其余字节为有效载荷,未使用字节填
0xFF。
# 3. 使用方法
# (0) 地面站配置
产品 CAN 总线上可挂载多种基于 CAN 的通信协议。若要通过 CAN 输出 NMEA 2000,须在上位机中将对应端口配置为 NMEA 2000,保存并重启后生效。
# (1) MCU 单片机 CAN 总线接收
可依据本公司通信协议获取对应数据包的 CAN ID 与字段定义,在总线上接收并解码。注意:总线上以 扩展帧 方式发布。
# (2) NMEA 2000 设备直连
也可使用常见 NMEA 2000 分析仪直接接入惯导模块,在分析仪上查看常用导航信息。
# 4. 测试效果
用 CAN 分析仪抓取总线数据,可见模块按协议标准向总线发布 NMEA 2000 数据。
# 5. 通信协议
# (1) 目前支持的 NMEA 2000 数据包
协议字段定义见 [FDI_NMEA 2000](/developers/02-fdilink/nmea 2000.html)。
| 序号 | PGN | CAN_ID | 描述 | 频率 (Hz) | 数据长度 (bit) | 波特率 | 数据包类型 |
|---|---|---|---|---|---|---|---|
| 1 | 126992 | 0x01F010FF | UTC 时间 | 1 | 8 | 250K | 单帧 |
| 2 | 127250 | 0x01F112FF | 艏向 | 1 | 8 | 250K | 单帧 |
| 3 | 127251 | 0x01F113FF | 转向速率 | 10 | 8 | 250K | 单帧 |
| 4 | 127257 | 0x01F119FF | 姿态角 | 1 | 8 | 250K | 单帧 |
| 5 | 127258 | 0x01F11AFF | 磁偏角 | 1 | 5 | 250K | 单帧 |
| 6 | 129025 | 0x01F801FF | 位置,快速更新 | 10 | 8 | 250K | 单帧 |
| 7 | 129026 | 0x01F802FF | COG & SOG,快速更新 | 4 | 8 | 250K | 多帧 |
| 8 | 129029 | 0x01F805FF | GNSS 位置数据 | 1 | 51 | 250K | 多帧 |
| 9 | 129044 | 0x01F814FF | 基准 | 1 | 20 | 250K | 单帧 |
| 10 | 129539 | 0x01FA03FF | GNSS DOPs | 1 | 8 | 250K | 多帧 |
| 11 | 129540 | 0x01FA04FF | GNSS 信息 | 1 | 15 | 250K | 多帧 |
| 12 | 129545 | 0x01FA09FF | GNSS RAIM 输出 | 2 | 15 | 250K | 多帧 |
| 13 | 129547 | 0x01FA0BFF | GNSS 伪距误差统计 | 2 | 15 | 250K | 单帧 |
# (2) 数据包协议
可根据 NMEA 2000 国际标准及上表 PGN 编号查询字段定义并正确解析。本公司说明见 [FDI_NMEA 2000](/developers/02-fdilink/nmea 2000.html);国际标准 PGN 表见 [NMEA 2000 PGN Table 手册](/pdfs/NMEA 2000_v1-300_App_B1_PGN_Table(1).pdf)。







